"""
1.实例属性怎么定义？
self.xxx（类） 或者对象.XXX
2.实例方法中的self代表什么？（简答）
代表对象本身
3.类中__init__方法在什么时候会调用？（简答）
在创建对象的同时自动调用，实例化对象
5.封装一个学生类Student，（自行分辨定义为类属性还是实例属性，方法定义为实例方法）
属性：身份（学生）、姓名、年龄、性别、英语成绩、数学成绩、语文成绩
方法一：计算总分
方法二：计算三科分均分
方法三：打印学生的个人信息：我的名字叫XX，年龄：XX，性别：XX。
请定义此类，并实例化1个学生，打印学生个人信息，计算总分
"""

class Student:

    def __init__(self, name, age, gender, english_achievement, math_scores, language_achievement, identity="学生"):
        self.my_name = name
        self.my_age = age
        self.my_gender = gender
        self.english_achievement = english_achievement
        self.math_scores = math_scores
        self.language_achievement = language_achievement

    def total_score(self):
        scpre = int(self.english_achievement) + int(self.math_scores) + int(self.language_achievement)
        print("{}的语数外总分为：{}".format(self.my_name, scpre))

    def average(self):
        num = (int(self.english_achievement) + int(self.math_scores) + int(self.language_achievement)) / 3
        print(num)

    def information(self):
        print("我的名字叫：{}，年龄：{}，性别：{}".format(self.my_name, self.my_age, self.my_gender))

people = Student("小明", "25", "男", "130", "120", "130")
people.total_score()
people.average()
people.information()

"""
定义一个登录用的测试用例类LoginCase，每一个实例对象都是一个登录的测试用例
属性：用例名、预期结果、实际结果（初始化时不确定值哦）
方法：
1.运行用例
说明：有两个参数：用户名和密码，能够登录成功的用户名：py37，密码：666666
通过用户名和密码正确与否判断，是否登录成功，并返回实际结果
ps：可以在用例内部考虑不符合的情况，密码长度不是6位，密码不正确，用户名不正确等
2.获取用例比对结果（比对预期结果和实际结果是否相等，并输出成功or失败）

"""

class LoginCase:
    def __init__(self,case_name, case_expected):
        self.case_name = case_name
        self.case_expected = case_expected
        self.case_actual = None

    def run_case(self, user, passwd):
        if len(passwd) != 6:
            self.case_actual = "密码长度不等于6"
            return

        if user != "py37":
            self.case_actual = "账号不正确"
            return

        if passwd != "666666":
            self.case_actual = "密码错误"
            return

        if user == "py37" and passwd == "666666":
            self.case_actual = "登录成功"

    def case_res(self):
        if self.case_actual != self.case_expected:
            print("实际结果与预期结果不相等，用例不通过")

        else:
            print("实际结果与用例相等，测试通过")

        print("实际结果为{}".format(self.case_actual))
        print("预期结果为{}".format(self.case_expected))


login_suc = LoginCase("成功登录系统", "登录成功")
login_suc.run_case("py37", "666666")
login_suc.case_res()

login_suc = LoginCase("成功登录系统", "登录成功")
login_suc.run_case("py37", "666667")
login_suc.case_res()